package com.cmict.data.system.service.oa;

import com.cmict.data.framework.common.pojo.PageResult;
import com.cmict.data.system.controller.admin.oa.vo.*;
import com.cmict.data.system.dal.dataobject.oa.ScheduleManagementDO;

import javax.validation.Valid;
import java.util.List;

public interface ScheduleManagementService {

    /**
     * 创建日程管理
     *
     * @param reqVO 日程管理信息
     * @return 日程管理编号
     */
    Long createScheduleManagement(ScheduleManagementCreateReqVO reqVO);

    /**
     * 修改日程管理
     *
     * @param reqVO 日程管理信息
     */
    void updateScheduleManagement(@Valid ScheduleManagementUpdateReqVO reqVO);

    /**
     * 删除日程管理
     *
     * @param id 日程管理编号
     */
    void deleteScheduleManagement(Long id);

    /**
     * 日历页面获得日程管理
     *
     * @param reqVO 条件
     * @return 数据集合
     */
    List<ScheduleManagementDO> getScheduleManagementList(ScheduleManagementCalendarReqVO reqVO);

    /**
     * 获得日程管理分页列表
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<ScheduleManagementDO> getScheduleManagementPage(ScheduleManagementPageReqVO reqVO);

    /**
     * 用户登陆后获取未推送的日程管理
     *
     * @param reqVO 条件
     * @return 数据集合
     */
    List<ScheduleManagementDO> selectListNoPush(ScheduleManagementNoPushReqVO reqVO);

    /**
     * 稍后提醒：更新日程为已提醒并将发送时间加十分钟
     *
     * @param id 日程管理id
     */
    void updateLaterRemind(Long id);

//    /**
//     * 定时任务查询到期提醒的弹窗
//     *
//     */
//    Integer executeScheduleManagement();
}
